home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / tools / post2_g2 / src / p_kana.c < prev    next >
Text File  |  1997-10-13  |  16KB  |  641 lines

  1. /*
  2.     post / 郵便番号検索プログラム
  3.  
  4.     p_kana.c / カナ検索部
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <sys/dos.h>
  11. #include <mbstring.h>
  12. #include "post.h"
  13.  
  14.  
  15. /*
  16.     カナ検索メイン
  17. */
  18. void
  19. hankaku_kensaku()
  20. {
  21.     int    point[K_GEN],        /* ofs 格納用 */
  22.         uchikiri = 0,        /* 打ち切りビット(ないと思うけど) */
  23.         kensuu = 0,        /* 検索ヒット件数 */
  24.         gen_page = 0,        /* 現在のページ数 */
  25.         zen_page = 0,        /* 全ページ数 */
  26.         kijun = 0,        /* 表示用基準 */
  27.         ki = 0,            /* 基準から算出した件数 */
  28.         aza_sw = 0,        /* 字名スイッチ */
  29.         s_num = 0,        /* 選択用 */
  30.         mainlp = 0,        /* 表示ループ用 */
  31.         lp = 0,            /* 表示ループ用(その2) */
  32.         lpcnt = 0,        /* 表示ループ用(その2) */
  33.         shitei_ku_unkn = 0,    /* 指定都市内の区名が不明スイッチ(長いねどうも) */
  34.         nextp = 0,        /* オフセット保存用 */
  35.         slen = 0,        /* 厳密検索用文字列長さ */
  36.         i1;            /* ループ汎用 */
  37.  
  38.     uchar    joukyou[K_GEN],        /* ヒット時のオフセット */
  39.         pnum[12][12],        /* 郵便番号 */
  40.         pknum[12][8],        /* 旧番号 */
  41.         numwork[12],        /* 取りワーク */
  42.         numbuff[12],        /* 入力用ワーク */
  43.         bdelim = '\0';        /* 直前のデリミタ */
  44.  
  45.     uchar    page_todou[12][10],    /* ページ用の都道府県ワーク */
  46.         page_kugun[12][32],    /* ページ用の市区郡ワーク */
  47.         page_tyouson[12][32],    /* ページ用の市内区・町村ワーク */
  48.         page_azamei[12][512],    /* ページ用の字名ワーク(50文字で打ち切り) */
  49.         page_yomi0[12][16],    /* ページ用読み(都道府県) */
  50.         page_yomi1[12][32],    /* ページ用読み(市区郡) */
  51.         page_yomi2[12][32],    /* ページ用読み(市内区・町村) */
  52.         page_yomi3[12][512];    /* ページ用読み(字名) */
  53.  
  54.     struct _inpptr    inpp;
  55.  
  56.  
  57.     /* エラーは 6?? */
  58.  
  59.     /* 読み検索 */
  60.     ofs = 0;    /* 最初から */
  61.     kensuu = 0;
  62.     slen = strlen( input_str );
  63.  
  64.     /* 小さいカナを大きいカナへ変換 */
  65.     for( i1=1; i1<=slen-2; i1++ ) {    /* 最初と最後には小さい文字は出てこない(普通は) */
  66.         if(       input_str[i1] == 0xaf ) {
  67.                input_str[i1] =  0xc2;
  68.         } else if( input_str[i1] == 0xac ) {
  69.                input_str[i1] =  0xd4;
  70.         } else if( input_str[i1] == 0xad ) {
  71.                input_str[i1] =  0xd5;
  72.         } else if( input_str[i1] == 0xae ) {
  73.                input_str[i1] =  0xd6;
  74.         }
  75.     }
  76.  
  77.     /* とりあえず検索 */
  78.     do {
  79.         ofs = bm_find( '.', input_str, ofs );
  80.         if( ofs == -1 ) {
  81.             break;
  82.         }
  83.         if( kensuu == K_GEN ) {    /* 件数 == K_GEN で検索打ち切り */
  84.             uchikiri = 1;
  85.             break;
  86.         }
  87.  
  88.         /* 厳密検索 */
  89.         if( genmitsu_mode ) {    /* 限定検索モードなら */
  90.             /* いま ofs は文字列の次のデリミタ位置にある */
  91.             if( is_not_delim( buf[ofs] ) ) {    /* 直後がデリミタでない */
  92.                 continue;        /* ならば、途中で終わった */
  93.             }
  94.             if( is_not_delim( buf[ofs-slen-1] ) ) {    /* 直前がデリミタでない */
  95.                 continue;        /* ならば、途中でヒットした */
  96.             }
  97.         }
  98.  
  99.         /* ヒットしました */
  100.         nextp = ofs;
  101.  
  102.         /* 読みデリミタの前のデリミタは何か */
  103.         pass_back_han( '+' );
  104.         ofs -= 2;
  105.         pass_back_han( '.' );
  106.         ofs--;
  107.  
  108.         /* 字名限定の時は、字名以外は取らない */
  109.         if( azamei_gentei ) {
  110.             if( buf[ofs] != '%' ) {
  111.                 ofs = nextp;
  112.                 continue;
  113.             }
  114.         }
  115.  
  116.         point[ kensuu ] = ofs;    /* これはデリミタを指している */
  117.         joukyou[ kensuu ] = buf[ofs];    /* デリミタを取っておく */
  118.         kensuu++;
  119.         ofs = nextp;
  120.  
  121.     } while( 1 );
  122.  
  123.     if( kensuu != 0 ) {    /* あった */
  124.  
  125.         gen_page = 1;            /* 1ページ目から */
  126.  
  127.         if( kensuu % 12 == 0 ) {
  128.             zen_page = kensuu / 12;
  129.         } else {
  130.             zen_page = kensuu / 12 + 1;
  131.         }
  132.  
  133.         if( zen_page == 0 ) {
  134.             zen_page = 1;
  135.         }
  136.  
  137.         mainlp = 1;
  138.         do {
  139.             _dos_c_cls_al();
  140.             status_print();
  141.             printf("該当件数 : %4d 件",kensuu );
  142.             if( uchikiri ) {    /* 検索を打ち切っていたら */
  143.                 printf("(打切)");
  144.             } else {
  145.                 printf("\t");
  146.             }
  147.             printf("\tページ : %2d / %2d\n", gen_page, zen_page);
  148.  
  149.             /* 基準値 */
  150.             kijun = (gen_page - 1) * 12;
  151.  
  152.             /* 実際に表示する件数 */
  153.             /* 1ページしかない、もしくは最終ページなら調整 */
  154.             if( gen_page == zen_page ) {
  155.                 if( zen_page >= 2 ) {
  156.                     lpcnt = kensuu - ((zen_page-1)*12);
  157.                 } else {
  158.                     lpcnt = kensuu;
  159.                 }
  160.             } else {
  161.                 lpcnt = 12;
  162.             }
  163.  
  164.             /* 初期化 */
  165.             for( i1=0; i1<=11; i1++ ) {
  166.                 page_todou[i1][0]     = '\0';
  167.                 page_kugun[i1][0]     = '\0';
  168.                 page_tyouson[i1][0]     = '\0';
  169.                 page_azamei[i1][0]     = '\0';
  170.                 page_yomi0[i1][0]     = '\0';
  171.                 page_yomi1[i1][0]     = '\0';
  172.                 page_yomi2[i1][0]     = '\0';
  173.                 page_yomi3[i1][0]     = '\0';
  174.                 pnum[i1][0]         = '\0';
  175.             }
  176.  
  177.             /* データを取ってくる */
  178.             for( i1=0; i1<=lpcnt-1; i1++ ) {
  179.  
  180.                 aza_sw = 0;
  181.                 ki = kijun + i1;
  182.                 ofs = point[ ki ] + 1;
  183.                 bdelim = joukyou[ ki ];    /* デリミタセット */
  184.  
  185.                 /* case で処理しないのには理由があるので注意 */
  186.                 if( bdelim == '%' ) {    /* 字名 */
  187.  
  188.                     /* 字名を得る */
  189.                     get_next_han( page_azamei[i1] );
  190.                     /* 50 字で打ち切り */
  191.                     if( strlen( page_azamei[i1] ) >= 48 ) {
  192.                         page_azamei[i1][48]='\0';
  193.                         strcat( page_azamei[i1], "〈略〉" );
  194.                     }
  195.                     get_next_han2( page_yomi3[i1] );    /* 読み */
  196.                     if( buf[ofs] != '*' ) {
  197. //printf("例外!!!\n");
  198.                         pass_next_han2( '*' );
  199.                     }
  200.                     ofs++;
  201.                     get_next_num( numwork );
  202.                     number_seikei( numwork );
  203.                     strcpy( pnum[i1], " " );
  204.                     strcat( pnum[i1], numwork );
  205.                     ofs++;
  206.                     get_next_num( pknum[i1] );
  207.                     aza_sw = 1;
  208.  
  209.                     /* 市区郡町村(市内区も)デリミタに */
  210.                     /* ぶつかるまで、バックトレース */
  211.                     /* 得られたデリミタは、bdelim へ */
  212.                     bdelim = backtrace();
  213.                 }
  214.  
  215.                 if( bdelim == '!' ) {    /* 市名 */
  216.  
  217.                     /* 市名を得る */
  218.                     get_next_han( page_kugun[i1] );
  219.                     strcat( page_kugun[i1], "市" );
  220.                     get_next_han2( page_yomi1[i1] );
  221.  
  222.                     if( !aza_sw ) {    /* 字名が得られていない */
  223.  
  224.                         /* 政令指定都市であれば */
  225.                         if( seirei_check( page_kugun[i1] ) != -1 ) {
  226.  
  227.                             /* 市内区が unknown である */
  228.                             shitei_ku_unkn = 1;
  229.                         }
  230.                     }
  231.  
  232.                     /* 県へ戻る準備 */
  233.                     pass_back_han( ' ' );
  234.                     bdelim = ' ';
  235.                 }
  236.  
  237.                 if( bdelim == '\"' ) {    /* 特別区 */
  238.  
  239.                     /* 区名を得る */
  240.                     get_next_han( page_kugun[i1] );
  241.                     strcat( page_kugun[i1], "区" );
  242.                     get_next_han2( page_yomi1[i1] );
  243.  
  244.                     /* 特別区は東京都に決まっているのだけど */
  245.                     pass_back_han( ' ' );
  246.                     bdelim = ' ';
  247.                 }
  248.  
  249.                 if( bdelim == '$' ) {    /* 市内区 */
  250.  
  251.                     /* 市内区名を得る */
  252.                     get_next_han( page_tyouson[i1] );
  253.                     strcat( page_tyouson[i1], "区" );
  254.                     get_next_han2( page_yomi2[i1] );
  255.  
  256.                     /* 直前の市名を得る */
  257.                     pass_back_han( '!' );
  258.                     get_next_han( page_kugun[i1] );
  259.                     strcat( page_kugun[i1], "市" );
  260.                     get_next_han2( page_yomi1[i1] );
  261.  
  262.                     /* 県へ戻る準備 */
  263.                     pass_back_han( ' ' );
  264.                     bdelim = ' ';
  265.                 }
  266.  
  267.                 if( bdelim == ':' ) {    /* 町名 */
  268.  
  269.                     /* 町名を得る */
  270.                     get_next_han( page_tyouson[i1] );
  271.                     strcat( page_tyouson[i1], "町" );
  272.                     get_next_han2( page_yomi2[i1] );
  273.                     ichien_check( pnum[i1], pknum[i1] );
  274.  
  275.                     /* 郡へ戻る準備 */
  276.                     pass_back_han( '#' );
  277.                     bdelim = '#';
  278.                 }
  279.  
  280.                 if( bdelim == ';' ) {    /* 村名 */
  281.  
  282.                     /* 町名を得る */
  283.                     get_next_han( page_tyouson[i1] );
  284.                     strcat( page_tyouson[i1], "村" );
  285.                     get_next_han2( page_yomi2[i1] );
  286.                     ichien_check( pnum[i1], pknum[i1] );
  287.  
  288.                     /* 郡へ戻る準備 */
  289.                     pass_back_han( '#' );
  290.                     bdelim = '#';
  291.                 }
  292.  
  293.                 if( bdelim == '#' ) {    /* 郡名 */
  294.  
  295.                     /* 郡名を得る */
  296.                     get_next_han( page_kugun[i1] );
  297.                     strcat( page_kugun[i1], "郡" );
  298.                     get_next_han2( page_yomi1[i1] );
  299.  
  300.                     /* 島しょなら、ヌルね */
  301.                     if( strcmp( page_kugun[i1], "島しょ郡" ) == 0 ) {
  302.                         strcpy( page_kugun[i1], "" );
  303.                         strcpy( page_yomi1[i1], "" );
  304.                     }
  305.  
  306.                     /* 県へ戻る準備 */
  307.                     pass_back_han( ' ' );
  308.                     bdelim = ' ';
  309.                 }
  310.  
  311.                 if( bdelim == ' ' ) {    /* 県名 */
  312.  
  313.                     /* 県名を得る */
  314.                     get_next_han( page_todou[i1] );
  315.                     get_next_han2( page_yomi0[i1] );
  316.  
  317.                 } else {
  318.                     printf("異常 601 : 独自検索で県名を突破した\n");
  319.  
  320.                     printf("point[ki]=|%d|\n",point[ki]);
  321.                     printf("joukyou[ki]=|%c|\n",joukyou[ki]);
  322.                     printf("page_todou[i1]=|%s|\n",page_todou[i1]);
  323.                     printf("page_kugun[i1]=|%s|\n",page_kugun[i1]);
  324.                     printf("page_tyouson[i1]=|%s|\n",page_tyouson[i1]);
  325.                     printf("page_azamei[i1]=|%s|\n",page_azamei[i1]);
  326.                     printf("bdelim=|%c|\n",bdelim);
  327.                     for(i1=0; i1<=19; i1++ ) {
  328.                         printf("%c",buf[ctr+i1]);
  329.                     }
  330.                     printf("\n");
  331.  
  332.                     return;
  333.                 }
  334.  
  335.                 printf("%4d: ", ki+1 );    /* 件数表示 */
  336.  
  337.                 if( shitei_ku_unkn && joukyou[ki] == '!' ) {
  338.                     printf("指定都市名");
  339.                 } else {
  340.                     switch( joukyou[ki] ) {
  341.                         case ' ':
  342.                             printf("都道府県名");
  343.                             break;
  344.                         case '#':
  345.                             printf("郡名\t");
  346.                             break;
  347.                         case '!':
  348.                             printf("市名\t");
  349.                             break;
  350.                         case ':':
  351.                             printf("町名\t");
  352.                             break;
  353.                         case ';':
  354.                             printf("村名\t");
  355.                             break;
  356.                         case '\"':
  357.                             printf("特別区名\t");
  358.                             break;
  359.                         case '$':
  360.                             printf("市内区名\t");
  361.                             break;
  362.                         case '%':
  363.                             printf("字名\t");
  364.                             break;
  365.                         default:
  366.                             printf("\t\t");
  367.                             break;
  368.                     }
  369.                 }
  370.  
  371.                 /* 桁揃え */
  372.                 keta( page_todou[i1], page_yomi0[i1] );
  373.                 keta( page_kugun[i1], page_yomi1[i1] );
  374.                 keta( page_tyouson[i1], page_yomi2[i1] );
  375.                 keta( page_azamei[i1], page_yomi3[i1] );
  376.  
  377.                 /* 読みの表示 */
  378.                 printf(" ");
  379.                 kugiri();
  380.                 if( joukyou[ki] == ' ' ) {    /* 県からなら */
  381.                     moji_pr( page_yomi0[i1], input_str );
  382.                 } else {
  383.                     printf("%s",page_yomi0[i1]);
  384.                 }
  385.                 kugiri();
  386.                 if( page_yomi1[i1][0] != '\0' ) {
  387.                     if( joukyou[ki] == '!' ||
  388.                         joukyou[ki] == '#' ||
  389.                         joukyou[ki] == '\"' ) {
  390.                         moji_pr( page_yomi1[i1], input_str );
  391.                     } else {
  392.                         printf("%s", page_yomi1[i1] );
  393.                     }
  394.                     kugiri();
  395.                 }
  396.                 if( page_yomi2[i1][0] != '\0' ) {
  397.                     if( joukyou[ki] == ':' ||
  398.                         joukyou[ki] == ';' ||
  399.                         joukyou[ki] == '$' ) {
  400.                         moji_pr( page_yomi2[i1], input_str );
  401.                     } else {
  402.                         printf("%s", page_yomi2[i1] );
  403.                     }
  404.                     kugiri();
  405.                 }
  406.                 if( page_yomi3[i1][0] != '\0' ) {
  407.                     if( joukyou[ki] == '%' ) {
  408.                         moji_pr( page_yomi3[i1], input_str );
  409.                     } else {
  410.                         printf("%s", page_yomi3[i1] );
  411.                     }
  412.                     kugiri();
  413.                 }
  414.                 puts("");
  415.  
  416.                 /* 次の行 */
  417.                 if( pnum[i1][0] != '\0' ) {    /* 番号が分かっていれば */
  418.                     if( k_suppress ) {
  419.                         printf("\t");
  420.                     } else {
  421.                         k_num_disp( pknum[i1] );
  422.                     }
  423.                     printf("%s", pnum[i1] );    /* 郵便番号表示 */
  424.                 } else {
  425.                     printf("\t\t ");
  426.                 }
  427.                 kugiri();
  428.  
  429.                 /* 地名の表示 */
  430.                 printf("%s",page_todou[i1]);
  431.                 kugiri();
  432.                 if( page_kugun[i1][0] != '\0' ) {
  433.                     printf("%s",page_kugun[i1]);
  434.                     kugiri();
  435.                 }
  436.                 if( page_tyouson[i1][0] != '\0' ) {
  437.                     printf("%s",page_tyouson[i1]);
  438.                     kugiri();
  439.                 }
  440.                 if( page_azamei[i1][0] != '\0' ) {
  441.                     printf("%s",page_azamei[i1]);
  442.                     kugiri();
  443.                 }
  444.                 if( pnum[i1][0] == '*' ) {
  445.                     printf("(全域)");
  446.                 }
  447.                 puts("");
  448.             }
  449.  
  450.             /* キー入力 */
  451.             puts("");
  452.             printf("地名選択:番号");
  453.             printf(" 字名切替:a 旧番号切替:k 区切:d 厳密検索:g\n");
  454.             if( gen_page != zen_page ) {        /* 最終ページなら*/
  455.                 printf("次ページ:n ");    /* 「次ページ」を表示しない */
  456.             }
  457.             if( gen_page != 1 ) {            /* 1ページ目なら */
  458.                 printf("前ページ:b ");    /* 「前ページ」を表示しない */
  459.             }
  460.             printf("次検索:p 終了:q or e\n");
  461.             inpp.max = 64;
  462.             inpp.length = 64;
  463.  
  464.             lp = 1;
  465.             do{
  466.                 fep_off();
  467.                 _dos_gets( &inpp );
  468.                 strcpy( numbuff, inpp.buffer );
  469.  
  470.                 if( numbuff[0] == 'q' || numbuff[0] == 'Q' ||
  471.                     numbuff[0] == 'e' || numbuff[0] == 'E' ) {
  472.                     puts("");
  473.                     exit( 0 );
  474.  
  475.                 } else if( numbuff[0] == 'k' || numbuff[0] == 'K' ) {
  476.                     /* 旧番号モードトグル */
  477.                     if( k_suppress ) {
  478.                         k_suppress = 0;
  479.                     } else {
  480.                         k_suppress = 1;
  481.                     }
  482.                     break;
  483.  
  484.                 } else if( numbuff[0] == 'a' || numbuff[0] == 'A' ) {
  485.                     /* 字名モードトグル */
  486.                     if( azamei_gentei ) {
  487.                         azamei_gentei = 0;
  488.                     } else {
  489.                         azamei_gentei = 1;
  490.                     }
  491.                     break;
  492.  
  493.                 } else if( numbuff[0] == 'd' || numbuff[0] == 'D' ) {
  494.                     /* 区切りモードトグル */
  495.                     if( kugiri_mode ) {
  496.                         kugiri_mode = 0;
  497.                     } else {
  498.                         kugiri_mode = 1;
  499.                     }
  500.                     break;
  501.  
  502.                 } else if( numbuff[0] == 'g' || numbuff[0] == 'G' ) {
  503.                     /* 区切りモードトグル */
  504.                     if( genmitsu_mode ) {
  505.                         genmitsu_mode = 0;
  506.                     } else {
  507.                         genmitsu_mode = 1;
  508.                     }
  509.                     break;
  510.  
  511.                 } else if( numbuff[0] == 'n' || numbuff[0] == 'N' ||
  512.                        numbuff[0] == '\0' ) {
  513.                     /* 次のページへ */
  514.                     if( gen_page != zen_page ) {
  515.                         gen_page++;
  516.                         break;
  517.                     }
  518.                 } else if( numbuff[0] == 'b' || numbuff[0] == 'B' ) {
  519.                     /* 前のページへ */
  520.                     if( gen_page != 1 ) {
  521.                         gen_page--;
  522.                         break;
  523.                     }
  524.  
  525.                 } else if( numbuff[0] == 'p' || numbuff[0] == 'P' ) {
  526.                     /* 次検索へ */
  527.                     dokuji_sw = 1;
  528.                     return;
  529.                 }
  530.  
  531.                 /* 漢字かカナが入力された? */
  532.                 if( ismbblead( numbuff[0] ) ||        /* 1文字はダメよ */
  533.                   ( ismbbkana( numbuff[0] ) && strlen( numbuff ) >= 2 ) ) {
  534.                     dokuji_sw = 1;
  535.                     exist_moji = 1;
  536.                     strcpy( input_str, numbuff );
  537.                     return;
  538.                 }
  539.  
  540.                 /* 番号が合っているなら終わり */
  541.                 s_num = atoi( numbuff );
  542.                 if( s_num >= kijun+1 && s_num <= kijun+lpcnt ) {
  543.                     mainlp = 0;
  544.                     break;
  545.                 }
  546.  
  547.                 /* 合っていないなら、郵便番号か? */
  548.                 if( is_bangou_legal( numbuff ) ) {    /* 番号なら */
  549.                     dokuji_sw = 1;
  550.                     exist_moji = 1;
  551.                     strcpy( input_str, numbuff );    /* 番号として検索 */
  552.                     return;
  553.                 }
  554.  
  555.             } while ( lp );
  556.  
  557.         } while( mainlp );
  558.  
  559.         puts("");
  560.  
  561.         /* 選択された */
  562.         lpcnt = s_num % 12 - 1;    /* ページ中何番が選択されたか? */
  563.         if( lpcnt == -1 ) {
  564.             lpcnt = 11;
  565.         }
  566.  
  567.         s_num--;    /* 0 オリジンなので */
  568.  
  569. //printf("s_num=|%d|, joukyou[s_num]=|%c|, point[s_num]=|%d|\n",s_num,joukyou[s_num],point[s_num]);
  570.  
  571.         /* joukyou によって処理分けする */
  572.         if( joukyou[s_num] == ' ' || joukyou[s_num] == '#' ) {
  573.  
  574. printf("警告 603 : この候補は、まだ検索できません。\n");
  575. dokuji_sw = 0;
  576.  
  577. //            ofs = point[ s_num ];
  578. //            todou_kensaku( page_todou[lpcnt], ofs );
  579.  
  580.         } else {
  581.  
  582.             _dos_c_cls_al();
  583.  
  584.             /* 解析結果の表示 */
  585.             printf("\t   %s", page_yomi0[lpcnt] );        /* 読みがなの表示 */
  586.             if( page_yomi1[lpcnt][0] != '\0' ) {
  587.                 kugiri();
  588.                 printf("%s", page_yomi1[lpcnt] );
  589.             }
  590.             if( page_yomi2[lpcnt][0] != '\0' ) {
  591.                 kugiri();
  592.                 printf("%s", page_yomi2[lpcnt] );
  593.             }
  594.             kugiri();
  595.             printf("\n");
  596.             printf("解析結果 : %s", page_todou[lpcnt] );
  597.             kugiri();
  598.             if( page_kugun[lpcnt][0] != '\0' ) {
  599.                 printf("%s", page_kugun[lpcnt] );
  600.                 kugiri();
  601.             }
  602.             if( page_tyouson[lpcnt][0] != '\0' ) {
  603.                 printf("%s", page_tyouson[lpcnt] );
  604.                 kugiri();
  605.             }
  606.             printf("\n\n");
  607.  
  608.             /* 1件しかないね? */
  609.             if( pnum[lpcnt][0] == '*' ) {
  610.                 printf("%s%s", page_todou[lpcnt], page_kugun[lpcnt] );
  611.                 if( page_tyouson[lpcnt][0] != '\0' ) {
  612.                     moji_pr( page_tyouson[lpcnt], input_str );
  613.                 }
  614.                 printf("内の郵便番号はすべて %s ", &pnum[lpcnt][1] );
  615.                 if( !k_suppress ) {
  616.                     k_num_disp( pknum[lpcnt] );
  617.                 }
  618.                 printf(" です。\n");
  619.  
  620.             } else {
  621.  
  622.                 if( !k_suppress ) {
  623.                     k_num_disp( pknum[lpcnt] );
  624.                 }
  625.                 printf("%s", &pnum[lpcnt][1]  );    /* 頭は表示しない */
  626.                 printf(": ");
  627.                 moji_pr( page_azamei[lpcnt], input_str );
  628.                 printf("(%s)\n", page_yomi3[lpcnt] );
  629.             }
  630.  
  631.             dokuji_sw = 1;
  632.         }
  633.  
  634.     } else {    /* kensuu は 0 、つまりヒットしなかった */
  635.  
  636.         printf("警告 602 : 入力された地名 %s は見つかりませんでした。", input_str );
  637.     }
  638.  
  639.     return;
  640. }
  641.